// 商品分类页
const db = wx.cloud.database()

Page({
  data: {
    // 分类数据
    categories: [],
    // 子分类数据
    subCategories: [],
    // 当前选中的分类
    currentCategory: {},
    // 当前选中的子分类ID
    currentSubCategoryId: 0,
    // 产品列表
    products: [],
    // 排序方式
    sortType: 'default',
    // 排序顺序
    sortOrder: 'desc',
    // 是否只显示优惠商品
    onlyShowDiscount: false,
    // 分页参数
    page: 1,
    pageSize: 10,
    // 加载状态
    loading: false,
    // 是否已加载全部
    loadAll: false
  },

  onLoad: function() {
    // 初始化分类
    this.loadCategories();
  },
  
  // 加载分类数据
  loadCategories: function() {
    this.setData({ loading: true });
    
    // 从云数据库获取分类数据
    db.collection('categories').get().then(res => {
      const categories = res.data || [];
      console.log('加载分类成功:', categories);
      
      this.setData({
        categories: categories,
        loading: false
      });
      
      if (categories.length > 0) {
        console.log('选择第一个分类:', categories[0]);
        this.switchCategory({
          currentTarget: {
            dataset: {
              id: categories[0]._id
            }
          }
        });
      }
    }).catch(err => {
      console.error('加载分类失败', err);
      this.setData({ loading: false });
      
      // 获取失败时显示提示
      wx.showToast({
        title: '加载分类失败',
        icon: 'none'
      });
    });
  },
  
  // 切换主分类
  switchCategory: function(e) {
    const categoryId = e.currentTarget.dataset.id;
    console.log('切换分类, ID:', categoryId);
    
    if (!categoryId) {
      console.error('分类ID为空');
      wx.showToast({
        title: '分类ID不能为空',
        icon: 'none'
      });
      return;
    }
    
    // 直接从当前加载的分类中查找对应的分类
    const category = this.data.categories.find(item => item._id === categoryId);
    
    if (category) {
      console.log('找到分类:', category);
      this.setData({
        currentCategory: category,
        products: [],
        page: 1,
        loadAll: false
      });
      
      // 加载子分类
      this.loadSubCategories(categoryId);
    } else {
      // 如果在本地缓存中没找到，尝试从数据库获取
      db.collection('categories').doc(categoryId).get().then(res => {
        const category = res.data;
        
        if (!category) {
          console.error('未找到分类详情');
          return;
        }
        
        console.log('从数据库获取分类详情:', category);
        
        this.setData({
          currentCategory: category,
          products: [],
          page: 1,
          loadAll: false
        });
        
        // 加载子分类
        this.loadSubCategories(categoryId);
        
      }).catch(err => {
        console.error('获取分类详情失败', err);
        wx.showToast({
          title: '获取分类详情失败',
          icon: 'none'
        });
      });
    }
  },
  
  // 获取子分类
  loadSubCategories: function(categoryId) {
    console.log('加载子分类, 父分类ID:', categoryId);
    
    // 因为没有subCategories集合，直接设置默认值并加载产品
    this.setData({
      subCategories: [],
      currentSubCategoryId: 0
    });
    
    // 直接加载商品，跳过子分类查询
    this.loadProducts();
    
    /* 注释掉原来的子分类加载代码
    // 从云数据库获取子分类
    db.collection('subCategories')
      .where({
        parentId: categoryId
      })
      .get()
      .then(res => {
        const subCategories = res.data || [];
        console.log('加载子分类成功:', subCategories);
        
        this.setData({
          subCategories: subCategories,
          currentSubCategoryId: 0
        });
        
        // 加载商品
        this.loadProducts();
        
      }).catch(err => {
        console.error('获取子分类失败', err);
      });
    */
  },
  
  // 切换子分类
  switchSubCategory: function(e) {
    const subCategoryId = e.currentTarget.dataset.id;
    console.log('切换子分类, ID:', subCategoryId);
    
    this.setData({
      currentSubCategoryId: subCategoryId,
      products: [],
      page: 1,
      loadAll: false
    });
    
    // 加载商品
    this.loadProducts();
  },
  
  // 改变排序方式
  changeSort: function(e) {
    const sortType = e.currentTarget.dataset.type;
    let sortOrder = this.data.sortOrder;
    
    // 如果点击的是当前排序方式，切换排序顺序
    if (sortType === this.data.sortType) {
      sortOrder = sortOrder === 'asc' ? 'desc' : 'asc';
    } else {
      // 如果是价格排序，默认升序
      sortOrder = sortType === 'price' ? 'asc' : 'desc';
    }
    
    this.setData({
      sortType: sortType,
      sortOrder: sortOrder,
      products: [],
      page: 1,
      loadAll: false
    });
    
    // 加载商品
    this.loadProducts();
  },
  
  // 切换是否只显示优惠商品
  toggleDiscount: function() {
    this.setData({
      onlyShowDiscount: !this.data.onlyShowDiscount,
      products: [],
      page: 1,
      loadAll: false
    });
    
    // 加载商品
    this.loadProducts();
  },
  
  // 加载更多商品
  loadMoreProducts: function() {
    if (this.data.loading || this.data.loadAll) return;
    
    this.setData({
      page: this.data.page + 1
    });
    
    this.loadProducts();
  },
  
  // 加载商品
  loadProducts: function() {
    const { currentCategory, sortType, sortOrder, onlyShowDiscount, page, pageSize } = this.data;
    
    if (!currentCategory._id) {
      console.error('当前分类ID为空，无法加载商品');
      return;
    }
    
    console.log('加载商品', {
      categoryId: currentCategory._id,
      page, pageSize, sortType, sortOrder, onlyDiscount: onlyShowDiscount
    });
    
    this.setData({
      loading: true
    });
    
    // 直接调用云函数检查结果
    console.log('直接调用云函数加载商品');
    wx.cloud.callFunction({
      name: 'getCategoryProducts',
      data: {
        categoryId: currentCategory._id,
        page: page,
        pageSize: pageSize,
        sortType: sortType,
        sortOrder: sortOrder,
        onlyDiscount: onlyShowDiscount
      }
    }).then(res => {
      console.log('云函数返回结果:', res.result);
      if (res.result && res.result.success) {
        const products = res.result.data || [];
        console.log('云函数获取到的商品数量:', products.length);
        
        // 如果云函数成功获取数据，直接设置
        this.setData({
          products: products,
          loading: false,
          loadAll: products.length < pageSize
        });
      } else {
        console.error('云函数未返回成功状态');
        // 尝试直接从数据库查询
        this.loadProductsFromDatabase();
      }
    }).catch(err => {
      console.error('调用云函数失败:', err);
      // 失败时尝试直接查询
      this.loadProductsFromDatabase();
    });
  },
  
  // 直接从数据库加载商品
  loadProductsFromDatabase: function() {
    const { currentCategory, sortType, sortOrder, onlyShowDiscount, page, pageSize } = this.data;
    
    // 尝试直接从云数据库加载商品
    const query = {
      categoryId: currentCategory._id
    };
    
    // 状态条件可选，可能不是所有商品都有status字段
    // query.status = 'on';
    
    if (onlyShowDiscount) {
      query.specialPrice = db.command.exists(true);
    }
    
    console.log('直接查询数据库，条件:', query);
    
    db.collection('products')
      .where(query)
      .skip((page - 1) * pageSize)
      .limit(pageSize)
      .get()
      .then(res => {
        console.log('直接查询商品结果:', res.data);
        
        const newProducts = res.data || [];
        
        // 如果是第一页，直接设置；否则追加
        this.setData({
          products: page === 1 ? newProducts : [...this.data.products, ...newProducts],
          loading: false,
          loadAll: newProducts.length < pageSize
        });
      })
      .catch(err => {
        console.error('直接查询商品失败:', err);
        this.setData({ loading: false });
        
        wx.showToast({
          title: '获取商品失败',
          icon: 'none'
        });
      });
  },
  
  // 跳转到商品详情
  navigateToProduct: function(e) {
    const productId = e.currentTarget.dataset.id;
    console.log('跳转到商品详情:', productId);
    wx.navigateTo({
      url: `/pages/product/product?id=${productId}`
    });
  },
  
  // 跳转到搜索页
  goToSearch: function() {
    wx.navigateTo({
      url: '/pages/search/search'
    });
  }
}); 